/*
* task.c
*  Created on: Jul 26, 2024
*  Author: vuxtvg@163.com
*/

#include <stdio.h>
#include "task_scheduler.h"

typedef struct
{
        uint16_t p1cnt;
        uint16_t p2cnt;
        uint16_t p3cnt;
        uint16_t uartf_cnt;
        uint16_t uartf1_cnt;
        uint16_t uartf2_cnt;
        uint16_t uartf3_cnt;
        uint16_t uartf4_cnt;
        uint16_t uartf5_cnt;
} CNT;

CNT cnt;

void uart_printf(void);
void led_toggle(void);

void PrintData1(void)
{
        cnt.p1cnt++;
        printf("cnt.p1cnt:%d\r\n", cnt.p1cnt);
}

void PrintData2(void)
{
        cnt.p2cnt++;
        printf("cnt.p2cnt:%d\r\n", cnt.p2cnt);
}

void PrintData3(void)
{
        cnt.p3cnt++;
        printf("cnt.p3cnt:%d\r\n", cnt.p3cnt);
}

void led_toggle(void)
{
        EnableTask(uart_printf);
        DisableTask(led_toggle);

//        HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}


void uartf(void)
{
       cnt.uartf_cnt++;
       printf("uartf task count:%d\r\n", cnt.uartf_cnt);
}

void uartf1(void)
{
        cnt.uartf1_cnt++;
        printf("uartf1 task count:%d\r\n", cnt.uartf1_cnt);
}

void uartf2(void)
{
        cnt.uartf2_cnt++;
        printf("uartf2 task count:%d\r\n", cnt.uartf2_cnt);
}

void uartf3(void)
{
        cnt.uartf3_cnt++;
        printf("uartf3 task count:%d\r\n", cnt.uartf3_cnt);
}

void uartf4(void)
{
        cnt.uartf4_cnt++;
        printf("uartf4 task count:%d\r\n", cnt.uartf4_cnt);
}
void uartf5(void)
{
        cnt.uartf5_cnt++;
        printf("uartf5 task count:%d\r\n", cnt.uartf5_cnt);
}
void uart_printf(void)
{
        EnableTask(led_toggle);
        DisableTask(uart_printf);

        printf("uartTaskRunCount:%ld ledTaskRunCount:%ld \r\n",
                        GetTaskRunCount(uart_printf), GetTaskRunCount(led_toggle));

        ExecuteOnMultiple(uart_printf, 1, PrintData1);
        ExecuteOnMultiple(uart_printf, 2, PrintData2);
        ExecuteOnMultiple(uart_printf, 3, PrintData3);
}

TaskComps_t g_taskComps[] =
        {
                { led_toggle, 500, 500, 0, 1 },
                { uartf, 1000, 1000, 0, 1 },
                { uartf1, 1000, 1000, 0, 1 },
                { uartf2, 1000, 1000, 0, 1 },
                { uartf3, 1000, 1000, 0, 1 },
                { uartf4, 1000, 1000, 0, 1 },
                { uartf5, 1000, 1000, 0, 1 },
                { uart_printf, 500, 500, 0, 0 },
        // 添加其他任务
                };

uint8_t TASK_NUM_MAX = (sizeof(g_taskComps) / sizeof(g_taskComps[0]));
